package com.theaf.basemodule.common.model;

import com.theaf.basemodule.common.dto.dataEx.DataDefDTO;
import com.theaf.core.utils.DictionaryHelper;
import com.theaf.core.utils.SmExceptionHelper;

import java.text.ParseException;
import java.text.SimpleDateFormat;

/**
 * @Author:songwenke
 * @Description:用户扩展表中数据转换
 * @Date:create in 14:31 2018/2/7
 * @Modified By:
 **/
public class StringTransHelper {
    public static Object trans(String value,int type,String format){
        if(type== DataDefDTO.TYPE_STRING){//字符串
            return value;
        }else if(type==DataDefDTO.TYPE_NUMBER){//数字，需要根据格式转换
            if("float".equals(format)) {
                return new Float(value);
            }else if("double".equals(format)){
                return new Double(value);
            }else if("int".equals(format)){
                return new Integer(value);
            }else{
                return new Long(value);
            }
        }else if(type==DataDefDTO.TYPE_DATE){//时间
            SimpleDateFormat sdf = new SimpleDateFormat(format);
            try {
                return sdf.parse(value);
            } catch (ParseException e) {
                SmExceptionHelper.sysCheckException(value+"的格式不符合格式"+format);
                return null;
            }
        }else if(type==DataDefDTO.TYPE_DIC){//数据字典
            return value+":"+DictionaryHelper.getChlidValue(format,value);
        }else if(type==DataDefDTO.TYPE_BOL){//布尔
            return "1".equals(value);
        }else if(type==DataDefDTO.TYPE_FILE){//文件
            return value;
        }else{//对象
            return value;
        }
    }

    public static String transR(Object value,int type,String format){
        if(type==DataDefDTO.TYPE_STRING){//字符串
            return value==null?null:value.toString();
        }else if(type==DataDefDTO.TYPE_NUMBER){//数字，需要根据格式转换
            if("float".equals(format)) {
                return value==null?null:((Number)value).toString();
            }else if("double".equals(format)){
                return value==null?null:((Number)value).toString();
            }else if("int".equals(format)){
                return value==null?null:((Number)value).toString();
            }else{
                return value==null?null:((Number)value).toString();
            }
        }else if(type==DataDefDTO.TYPE_DATE){//时间
            SimpleDateFormat sdf = new SimpleDateFormat(format);
            return value==null?null:sdf.format(value);
        }else if(type==DataDefDTO.TYPE_DIC){//数据字典
            return value==null?null:value.toString();
        } else if(type==DataDefDTO.TYPE_BOL){//布尔
            return value==null?null:(((Boolean)value)?"1":"0");
        }else if(type==DataDefDTO.TYPE_FILE){//文件
            return (String)value;
        }else{//对象
            return (String)value;
        }
    }
}
